from public.action import *
from public.business import *
from public.testData import *
from public.tools import *
import time
from selenium.webdriver.support.select import Select

testCase = "DBshop001_线下支付流程"

# 1.在首页搜索"小米",点击搜索按钮
# 2.选择小米mix3,加入到购物车,点击购物车按钮
# 3.点击"去结算"按钮
# 4.默认地址已经别选择,点击下一步按钮
# 5.支付方式选择"线下支付",点击确认订单
# 6.点击马上支付,输入"支付凭证信息","线下支付宝支付",点击提交支付凭证按钮
# 7.登录后台管理系统,地址是"http://localhost/dbshop/admin",
# 8.进入销售管理订单管理,找到刚才前台提交的订单,点击"编辑查看",再点击付款操作按钮
# 9.将付款状态修改为"已付款",操作说明中填写"已在支付宝账号中收到款项",点击提交保存按钮
# 10.点击"发货操作"按钮,输入快递单号"00100001111",输入操作说明"已发货",点击"点击发货"按钮
# 11.到dbshop前台我的订单中完成收货
# 12.到dbshop前台查看我的订单"交易完成"中,检查上面的订单状态

#打开浏览器（打开DBshop首页）
firefox=openBrowser(url)
# 登录账号密码
DBshopLogin(firefox,userName,password)
# 在首页搜索"小米",点击搜索按钮
firefox.find_element_by_xpath('//input[@class="search-text"]').send_keys('小米')
# 点击搜索按钮
firefox.find_element_by_xpath('//input[@class="search-btn iconfont"]').click()
# 选择小米mix3,点击图片
firefox.find_element_by_xpath('//a[@href="/dbshop/goods/8/2"]').click()
# 切换至新页面
switchWindow(firefox,2)
# 点击添加购物车按钮
firefox.find_element_by_id('add_cart_submit').click()
# 点击去购物车结算
firefox.find_element_by_link_text('去购物车结算').click()
# 点击去结算
firefox.find_element_by_xpath('//a[@class="btn btn-primary btn-next"]').click()
# 点击保存修改
firefox.find_element_by_xpath('//input[@class="btn btn-large btn-primary"]').click()
# 选择线下支付方式
firefox.find_element_by_xpath('//input[@value="xxzf"]').click()
# 点击确认订单
firefox.find_element_by_xpath('//input[@value="确认订单"]').click()
#使用变量orderNO存储订单编号
orderNO=firefox.find_element_by_xpath('(//font[@color="color:#ED145B"])[2]').text
rootPath=get_pro_rootpath()
writeFile(rootPath+'\public\order1.txt',orderNO) # 将订单编号写入到文件中
# 点击马上去支付
firefox.find_element_by_xpath('//input[@class="btn btn-primary"]').click()
# 填写支付凭证
firefox.find_element_by_id('state_info').send_keys('嗨害嗨')
# 点击提交支付凭证
firefox.find_element_by_xpath('//button[@class="btn btn-primary btn-large"]').click()

# 登录后台
firefox.get(urlAdmin)
# 登录后台
DBshopLoginAdmin(firefox)
# 后台打开销售管理，订单管理
DBshopEnterMenu2(firefox,'销售管理','订单管理')
# 输入订单号
firefox.implicitly_wait(30)
firefox.find_element_by_xpath('//input[@class="span11"]').send_keys(orderNO)
# 点击搜索
firefox.find_element_by_xpath('//button[@class="btn btn-small btn-primary"]').click()
# 点击编辑查看
firefox.find_element_by_link_text('编辑查看').click()
# 点击付款操作
firefox.find_element_by_link_text('付款操作').click()
# 选择已付款
Select(firefox.find_element_by_id('pay_state')).select_by_visible_text('已付款')
firefox.find_element_by_id('state_info').send_keys('已收款')
firefox.find_element_by_xpath('//button').click()
# 点击发货操作
firefox.find_element_by_link_text('发货操作').click()
# 点击发货
firefox.find_element_by_xpath('//button').click()
# 切到前台
firefox.get(url)
# 我的订单
firefox.find_element_by_link_text('我的订单').click()
# 点已发货
firefox.find_element_by_xpath('//a[@href="/dbshop/home/order/index/state/40"]').click()
# 搜索框输入orderNO
firefox.find_element_by_xpath('//input[@name="search_order_sn"]').send_keys(orderNO)
firefox.find_element_by_xpath('//button[@class="btn btn-small btn-primary"]').click()
firefox.find_element_by_xpath('//button[text()="确认收货"]').click()
firefox.find_element_by_xpath('//button[@class="btn btn-primary btn-large"]').click()
firefox.switch_to.alert.accept()

firefox.find_element_by_xpath('//input[@name="search_order_sn"]').send_keys(orderNO)
firefox.find_element_by_xpath('//button[text()="搜索"]').click()

try:
    firefox.find_element_by_link_text(orderNO).is_displayed()
    writeLog("%s 测试通过"%testCase)
except:
    writeLog("%s 测试失败"%testCase)
    getPhoto(firefox)
firefox.quit()